package com.erp.gather.service;

import com.erp.gather.domain.bo.ErpSellerStoreProductBo;
import com.erp.gather.domain.vo.ErpSellerStoreProductVo;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.oldPage.TableDataInfo;
import com.ruoyi.gather.api.domain.ErpSellerStoreProduct;
import com.ruoyi.gather.api.domain.ErpSellerStoreProductExpand;
import org.apache.ibatis.annotations.Param;


import java.math.BigDecimal;
import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * 卖家在线商品;参考AE-商品：发布产品信息（aliexpress.postproduct.redefining.postaeproduct）Service接口
 *
 * @author erp
 * @date 2023-03-28
 */
public interface IErpSellerStoreProductService {

    /**
     * 查询卖家在线商品;参考AE-商品：发布产品信息（aliexpress.postproduct.redefining.postaeproduct）
     */
    ErpSellerStoreProductVo queryById(Long id);

    /**
     * 查询卖家在线商品;参考AE-商品：发布产品信息（aliexpress.postproduct.redefining.postaeproduct）列表
     */
    TableDataInfo<ErpSellerStoreProductVo> queryPageList(ErpSellerStoreProductBo bo, PageQuery pageQuery);

    /**
     * 查询卖家在线商品;参考AE-商品：发布产品信息（aliexpress.postproduct.redefining.postaeproduct）列表
     */
    List<ErpSellerStoreProductVo> queryList(ErpSellerStoreProductBo bo);

    /**
     * 新增卖家在线商品;参考AE-商品：发布产品信息（aliexpress.postproduct.redefining.postaeproduct）
     */
    Boolean insertByBo(ErpSellerStoreProductBo bo);

    /**
     * 修改卖家在线商品;参考AE-商品：发布产品信息（aliexpress.postproduct.redefining.postaeproduct）
     */
    Boolean updateByBo(ErpSellerStoreProductBo bo);

    /**
     * 校验并批量删除卖家在线商品;参考AE-商品：发布产品信息（aliexpress.postproduct.redefining.postaeproduct）信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

	R<Object> publish(String sellerProductIds, Long storeId, Long stock, ErpSellerStoreProductExpand erpSellerStoreProductExpand);

	void push(Long sellerProductId, Long storeId, Long stock, ErpSellerStoreProductExpand erpSellerStoreProductExpand);

//	void push(ErpSellerStoreProductExpand expand);

	R<Object> fission(Long sellerStoreProductId);

	R<Object> restartpublish(Long sellerStoreProductId);

    List<Map<String, Object>> getSkuNameById(Long id);

//
//    R<Object> findAeProductStatusById(Long productId);
//
//	void confirmUploadSuccess(Long sellerStoreProductId);
//
//    R<Object> queryProductBusinessInfoById(Long productId);
//
	/**
	 *
	 * @param absoluteQuoteMapStr   区域定价
	 * @param priceAdjustmentMethod 调价方式：0固定上调，1百分比上调
	 * @param readjustPricesType    手动定价类型（0减去 1加上）
	 * @param readjustPrices        调价
	 * @param templateId            智能定价模板id
	 * @param productPrice          商品价格
	 * @return
	 */
	Map<String, Object> countPrice(String absoluteQuoteMapStr, String priceAdjustmentMethod, Integer readjustPricesType,
			BigDecimal readjustPrices, String templateId, String productPrice);

    R<Object> getSellerStoreProductInfo(ErpSellerStoreProduct erpSellerStoreProduct);

	R<Object> deleteErpSellerStoreProduct(ErpSellerStoreProduct erpSellerStoreProduct);

    R<Object> push(Long sellerStoreProductId);

	void confirmUploadSuccess(Long sellerStoreProductId);

	R<Object> findAeProductStatusById(Long productId);

	R<Object> getSellerStoreProductInfoById(String id);

    R<Object> selectRepeatProduct(String storeUserName, Long collectProductId);

	/**
	 * 根据店铺ID，获取店铺未下架商品数量
	 * @param storeId
	 * @return
	 */
	Long selectProductCountByStoreId(Long storeId);

	List<ErpSellerStoreProduct> queryProductByCycle(Integer cycle, List<Long> storeId);

    R<Object> confirmAeProductInfoStatus(String storeUserName);

    ErpSellerStoreProduct getFarthestProduct(String storeUserName);

    R<Object> delectBatchProducts(Long storeId,Integer type,String storeUserName);

    R<Object> publishChoiceProduct(Long sellerProductId, Long storeId, Long stock, String brandId, String templateld);
}
